Design Principles and Design Patterns